﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class ОтложенноеПроведениеДокументов
	{
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ ПОЛУЧЕНИЯ НАСТРОЕК ОТЛОЖЕННОГО ПРОВЕДЕНИЯ
		// Функция возвращает структуру параметров проведения документа
		//
		// Возвращаемое значение:
		// 	<Структура> - структура содержащая свойства:
		//				ДокументИспользуетсяВОтложенномПроведении - документ поддерживает отложенное проведение
		//				ПроведениеПоВсемВидамУчета - выполняется полное проведение документа
		//				ВыполняетсяДопроведение - выполняется допроведение документа
		//				ВыполняетсяОтложенноеПроведение - выполняется отложенное проведение документа
		//  Последние три свойства структуры имеют смысл, если ДокументИспользуетсяВОтложенномПроведении

		public object ПолучитьПараметрыПроведенияДокумента(/*ДокументОбъект*/)
		{
			/*СтруктураПараметров = Новый Структура("ДокументИспользуетсяВОтложенномПроведении, 
											|ПроведениеПоВсемВидамУчета, 
											|ВыполняетсяДопроведение, 
											|ВыполняетсяОтложенноеПроведение",Ложь,Ложь,Ложь, Ложь);*/
			//СвойствоЭтапПроведения = Неопределено;
			/*СтруктураПараметров.ДокументИспользуетсяВОтложенномПроведении = ДокументОбъект.ДополнительныеСвойства.Свойство("ЭтапПроведения", СвойствоЭтапПроведения) 
												ИЛИ ОтложенноеПроведениеДокументов.ДокументПодерживаетОтложенноеПроведение(ДокументОбъект);*/
			if(true/*СтруктураПараметров.ДокументИспользуетсяВОтложенномПроведении*/)
			{
				/*// Документ проводится в режиме допроведения,
*/
				/*// если свойство ДополнительныеСвойства содержит ЭтапПроведения 
*/
				/*// и данное свойство равно "Допроведение"
*/
				if(true/*СвойствоЭтапПроведения <> Неопределено*/)
				{
					//СтруктураПараметров.ПроведениеПоВсемВидамУчета = (СвойствоЭтапПроведения = "ПроведениеПолностью");
					//СтруктураПараметров.ВыполняетсяДопроведение    = (СвойствоЭтапПроведения = "Допроведение");
					//СтруктураПараметров.ВыполняетсяОтложенноеПроведение = (СвойствоЭтапПроведения = "Проведение");
				}
			}
			return null;
		}
		//Функция возвращает дату начала отложенного проведения для указанной организации
		//Если отложенное проведение для организации не используется, возвращается пустая дата

		public object ПолучитьДатуНачалаОтложенногоПроведения(/*Организация*/)
		{
			//Запрос = Новый Запрос();
			/*Запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	Настройка.ДатаНачалаДействия 					КАК ДатаНачалаОтложенногоПроведения
		|ИЗ
		|	РегистрСведений.НастройкаОтложенногоПроведения 	КАК Настройка
		|ГДЕ
		|	Настройка.Организация = &Организация
		|	";*/
			//Запрос.УстановитьПараметр("Организация",Организация);
			//Выборка = Запрос.Выполнить().Выбрать();
			if(true/*Выборка.Следующий()*/)
			{
				/*//В выборке всегда будет только один элемент, т.к. в регистре только одно измерение Организация
*/
			}
			return null;
		}
		// Функция возвращает список регистров, движения по которым формируются при допроведении
		//

		public object ПолучитьРегистрыОтложенногоПроведения(/**/)
		{
			//МассивРегистров = Новый Массив();
			//МассивРегистров.Добавить("РегистрНакопления.БракВПроизводствеБухгалтерскийУчет");
			//МассивРегистров.Добавить("РегистрНакопления.БракВПроизводствеНалоговыйУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ВзаиморасчетыУСН");
			//МассивРегистров.Добавить("РегистрНакопления.ВыпускПродукцииБухгалтерскийУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ВыпускПродукцииНалоговыйУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ВыпускПродукцииНаработкаБухгалтерскийУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ВыпускПродукцииНаработкаНалоговыйУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ЗатратыБухгалтерскийУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ЗатратыНаВыпускПродукцииБухгалтерскийУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ЗатратыНаВыпускПродукцииНалоговыйУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ЗатратыНаВыпускПродукцииНаработкаБухгалтерскийУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ЗатратыНаВыпускПродукцииНаработкаНалоговыйУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ЗатратыНалоговыйУчет");
			//МассивРегистров.Добавить("РегистрНакопления.КнигаУчетаДоходовИРасходов");
			//МассивРегистров.Добавить("РегистрБухгалтерии.Налоговый");
			//МассивРегистров.Добавить("РегистрБухгалтерии.Хозрасчетный");
			//МассивРегистров.Добавить("РегистрНакопления.НезавершенноеПроизводствоБухгалтерскийУчет");
			//МассивРегистров.Добавить("РегистрНакопления.НезавершенноеПроизводствоНалоговыйУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ПартииТоваровНаСкладахНалоговыйУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ПартииТоваровПереданныеБухгалтерскийУчет");
			//МассивРегистров.Добавить("РегистрНакопления.ПартииТоваровПереданныеНалоговыйУчет");
			//МассивРегистров.Добавить("РегистрНакопления.РасходыПриУСН");
			//МассивРегистров.Добавить("РегистрНакопления.РасчетыПоПриобретениюВУсловныхЕдиницахОрганизации");
			//МассивРегистров.Добавить("РегистрСведений.РасчетыПоПриобретениюОрганизации");
			//МассивРегистров.Добавить("РегистрСведений.РасчетыПоРеализацииОрганизации");
			//МассивРегистров.Добавить("РегистрНакопления.РасчетыПоРеализацииВУсловныхЕдиницахОрганизации");
			//МассивРегистров.Добавить("РегистрСведений.РасшифровкаКУДиР");
			//МассивРегистров.Добавить("РегистрНакопления.РозничнаяВыручкаОрганизаций");
			//МассивРегистров.Добавить("РегистрНакопления.УчетЗатратРегл");
			//МассивРегистров.Добавить("РегистрНакопления.УчетПродажИСебестоимости");
			//МассивРегистров.Добавить("РегистрНакопления.НДСВключенныйВСтоимость");
			//МассивРегистров.Добавить("РегистрНакопления.НДСЗаписиКнигиПокупок");
			//МассивРегистров.Добавить("РегистрНакопления.НДСЗаписиКнигиПродаж");
			//МассивРегистров.Добавить("РегистрНакопления.НДСКосвенныеРасходы");
			//МассивРегистров.Добавить("РегистрНакопления.НДСНачисленный");
			//МассивРегистров.Добавить("РегистрНакопления.НДСНезавершенноеПроизводство");
			//МассивРегистров.Добавить("РегистрНакопления.НДСПартииТоваров");
			//МассивРегистров.Добавить("РегистрНакопления.НДСпоОСиНМА");
			//МассивРегистров.Добавить("РегистрНакопления.НДСПредъявленный");
			//МассивРегистров.Добавить("РегистрНакопления.НДСПредъявленныйРеализация0");
			//МассивРегистров.Добавить("РегистрНакопления.НДСПродукция");
			//МассивРегистров.Добавить("РегистрНакопления.НДСРеализация0");
			//МассивРегистров.Добавить("РегистрНакопления.НДСсАвансов");
			//МассивРегистров.Добавить("РегистрНакопления.НДСУчетРаспределенныхОплатПоставщикам");
			//МассивРегистров.Добавить("РегистрНакопления.РеализованныеТовары");
			//МассивРегистров.Добавить("РегистрСведений.ДокументыТребующиеДопроведения");
			/*//Регистр включен в список, чтобы по нему очищались движения при допроведении
*/
			return null;
		}
		// ПолучитьРегистрыОтложенногоПроведения
		//Функция возвращает: используется ли отложенное проведение для даты и организации, указанных в документе
		//Используется в процедуре ДокументПодерживаетОтложенноеПроведение, а также в некоторых особых случаях
		//	1. УправлениеЗапасами.ПриПроведенииРасширеннаяАналитикаЗапасовИзменениеСостоянияОбработкаПроведения (логика формирования движений по регистрам учета затрат)
		//	2. модуль документа ВозвратТоваровОтПокупателя, процедура ПодготовитьСтруктуруШапкиДокумента
		//Параметры: СтруктураШапкиДокумента - структура шапки документа
		//				ДокументСсылка - ссылка на документ, передается если на момент вызова не известна СтруктураШапкиДокумента

		public object ИспользуетсяОтложенноеПроведение(/*СтруктураШапкиДокумента = Неопределено, ДокументСсылка = Неопределено*/)
		{
			if(true/*СтруктураШапкиДокумента = Неопределено*/)
			{
				//ДатаДокумента = ДокументСсылка.Дата;
			}
			//ДатаНачалаОтложенногоПроведения = ОтложенноеПроведениеДокументов.ПолучитьДатуНачалаОтложенногоПроведения(ОрганизацияДокумента);
			//Возврат ЗначениеЗаполнено(ДатаНачалаОтложенногоПроведения) И ДатаНачалаОтложенногоПроведения <= ДатаДокумента;
			return null;
		}
		// Функция возвращает признак того, что документ используется в отложенном проведении
		//

		public object ДокументПодерживаетОтложенноеПроведение(/*ДокументОбъект, СтруктураШапкиДокумента = Неопределено*/)
		{
			/*//Используется ли вообще отложенное проведение по дате и организации, указанным в документе
*/
			if(true/*НЕ ИспользуетсяОтложенноеПроведение(СтруктураШапкиДокумента,ДокументОбъект)*/)
			{
			}
			return null;
		}
		// ДокументПодерживаетОтложенноеПроведение
		//Функция возвращает дату первого недопроведенного документа по организации за указанный интервал дат
		//Параметры:
		//			Организация
		//			ОграничениеНачалоИнтервала и ОграничениеКонецИнтервала		- даты начала и окончания анализируемого интервала
		//				(если не указаны, то период не ограничен)
		//Возвращаемое значение: Дата (если все документы за указанный период допроведены, дата пустая)

		public object ПолучитьДатуПервогоНедопроведенногоДокумента(/*Организация,ОграничениеНачалоИнтервала = неопределено, ОграничениеКонецИнтервала = неопределено*/)
		{
			//Запрос = новый Запрос;
			/*Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
	|	Период
	|ИЗ 
	|	РегистрСведений.ДокументыТребующиеДопроведения
	|ГДЕ Активность 
	|	И Организация = &Организация "
	+?(ОграничениеНачалоИнтервала 	<> Неопределено, " И Период >= &ДатаНач ","")
	+?(ОграничениеКонецИнтервала 	<> Неопределено, " И Период <= &ДатаКон ","")+"
	|УПОРЯДОЧИТЬ ПО Период ВОЗР
	|";*/
			//Запрос.УстановитьПараметр("ДатаНач",ОграничениеНачалоИнтервала);
			//Запрос.УстановитьПараметр("ДатаКон",ОграничениеКонецИнтервала);
			//Запрос.УстановитьПараметр("Организация",Организация);
			//Выборка = Запрос.Выполнить().Выбрать();
			if(true/*Выборка.Следующий()*/)
			{
			}
			return null;
		}
		//Функция отсчитывает от указанной даты требуемое количество периодов назад
		//Параметры: ТекДата - дата от которой необходимо отнять количество периодов
		//		текПериодичность - период, который надо отнять (день либо месяц)
		//		КоличествоПериодов - количество периодов которые надо отнять (должно быть положительное число)
		//		флНачалоПериода - булево, признак того что необходимо вернуть начало периода. По умолчанию - ложь (возвращает конец периода)

		public object ОтсчитатьНазадКоличествоПериодов(/*ТекДата, ТекПериодичность, КоличествоПериодов, флНачалоПериода=Ложь*/)
		{
			if(true/*КоличествоПериодов = 0*/)
			{
				if(true/*НЕ ЗначениеЗаполнено(ТекПериодичность) ИЛИ ТекПериодичность = Перечисления.Периодичность.День*/)
				{
				}
			}
			/*//Периодичность ограничена - либо день, либо месяц
*/
			/*//Другие периоды в форме настройки выбирать не разрешено
*/
			if(true/*ТекПериодичность = Перечисления.Периодичность.Месяц*/)
			{
				//РезультатРасчета = ДобавитьМесяц(ТекДата, -1 * КоличествоПериодов);
			}
			return null;
		}
		//Функция возвращает период допроведения документов по настройке допроведения с учетом способа расчета дат: динамически или явно
		//Параметры: Настройка (ссылка на настройку допроведения документов)
		//Возвращаемое значение: структура с элементами НачалоИнтервала и КонецИнтервала

		public object ОпределитьПериодДопроведения(/*Настройка*/)
		{
			//Результат = новый Структура("НачалоИнтервала,КонецИнтервала");
			/*//Начало интервала
*/
			if(true/*Настройка.РассчитыватьНачалоИнтервала*/)
			{
				/*Результат.НачалоИнтервала = ОтсчитатьНазадКоличествоПериодов(ТекущаяДата(),
																	Настройка.ПериодичностьОтставанияНачалоИнтервала,
																	Настройка.КоличествоПериодовОтставанияНачалоИнтервала, 
																	Истина);*/
			}
			/*//Конец интервала
*/
			if(true/*Настройка.РассчитыватьКонецИнтервала*/)
			{
				/*Результат.КонецИнтервала = ОтсчитатьНазадКоличествоПериодов(ТекущаяДата(),
																	Настройка.ПериодичностьОтставанияКонецИнтервала,
																	Настройка.КоличествоПериодовОтставанияКонецИнтервала, 
																	Ложь);*/
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ ПРОВЕДЕНИЯ ДОКУМЕНТА В РЕЖИМЕ ОТЛОЖЕННОГО ПРОВЕДЕНИЯ
		//Обработчик подписки на событие "ПриПроведенииРегистрацияОтложенногоПроведения"
		//Параметры: Источник - ДокументОбъект, который проводится
		//			Отказ - булево, признак отказа
		//			РежимПроведения - режим проведения документа

		public void ПриПроведенииРегистрацияОтложенногоПроведения(/*Источник, Отказ, РежимПроведения*/)
		{
			if(true/*НЕ Источник.ОтражатьВБухгалтерскомУчете 
		//Документ не поддерживает отложенное проведение - не надо писать его в регистр
		ИЛИ НЕ Источник.ДополнительныеСвойства.Свойство("ЭтапПроведения")*/)
			{
				/*//Документ не поддерживает отложенное проведение - не надо писать его в регистр
*/
				/*ИЛИ НЕ Источник.ДополнительныеСвойства.Свойство("ЭтапПроведения") Тогда
		Возврат;*/
			}
			/*//Документ формирует движения в регистр только на этапе "Проведение"
*/
			/*//Если документ допроводится либо проводится по всем видам учета - движения не формируются
*/
			if(true/*Источник.ДополнительныеСвойства.ЭтапПроведения = "Проведение"*/)
			{
				//ПолныеПрава.РегистрацияОтложенногоПроведения(Источник.Ссылка, Источник.Организация);
			}
		}
		//Подготовка документа к проведению с использованием механизма отложенного проведения:
		//1. При необходимости (если еще не заполнено) заполняется дополнительное свойство "ЭтапПроведения"
		//2. Вносятся изменения в СтруктураШапкиДокумента:
		//		в зависимости от действия (проведение / допроведение / проведение по всем регистрам) изменяются признаки отражения в учетах
		//		в СтруктураШапкиДокумента

		public void ПодготовитьКПроведениюПоВидамУчета(/*ДополнительныеСвойства, СтруктураШапкиДокумента*/)
		{
			if(true/*ДополнительныеСвойства.Свойство("ЭтапПроведения")*/)
			{
				/*//Доп свойство установлено "снаружи" - это значит что производится
*/
				/*//- либо допроведение документа
*/
				/*//- либо "проведение по всем учетам"
*/
				/*//- либо выполняется повторное проведение документа без закрытия формы
*/
				/*//Признак отражения в упр. учете изменяется с учетом этапа проведения:
*/
				/*//Если этап - допроведение, документ по УУ не проводится
*/
				/*//Если этап - проведение по всем учетам, признак УУ не изменяется
*/
				if(true/*ДополнительныеСвойства.ЭтапПроведения = "Допроведение"*/)
				{
					//СтруктураШапкиДокумента.ОтражатьВУправленческомУчете 	= Ложь;
				}
			}
			/*//Выполняется отложенное проведение: документ по БУ и НУ не проводится
*/
			if(true/*ДополнительныеСвойства.ЭтапПроведения = "Проведение"*/)
			{
				//СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете 	= Ложь;
				//СтруктураШапкиДокумента.ОтражатьВНалоговомУчете 		= Ложь;
				if(true/*СтруктураШапкиДокумента.Свойство("ОтражатьВНалоговомУчетеУСН")*/)
				{
					//СтруктураШапкиДокумента.ОтражатьВНалоговомУчетеУСН 	= Ложь;
				}
			}
		}
		//Функция проверяет, проведен ли документ полностью - по всем регистрам
		//Параметры:  ДокументСсылка - ссылка на проверяемый документ (может быть как проведен, так и не проведен)
		//Возвращаемое значение: булево (Истина - проведен полностью, Ложь - не проведен полностью)
		//Вызывается из процедуры НастройкаПравДоступа.ПроверитьВозможностьОтраженияВРеглУчете

		public object ПроверитьДокументПроведенПолностью(/*ДокументСсылка*/)
		{
			if(true/*не ДокументСсылка.Проведен*/)
			{
			}
			if(true/*НЕ ДокументПодерживаетОтложенноеПроведение(ДокументСсылка)*/)
			{
			}
			/*//Создадим массив для проверки документов
*/
			//МассивТипов = новый Массив;
			//МассивТипов.Добавить(ТипЗнч(ДокументСсылка));
			//МассивДокументов = Новый Массив;
			//МассивДокументов.Добавить(ДокументСсылка);
			/*//Вызовем функцию проверки статуса для таблицы документов
*/
			//РезультатЗапроса = ПроверитьДокументыПроведеныПолностью(МассивДокументов, новый ОписаниеТипов(МассивТипов));
			/*//В результате всегда будет одна строка
*/
			//ВыборкаРезультат = РезультатЗапроса.Выбрать();
			//ВыборкаРезультат.Следующий();
			return null;
		}
		//Функция проверяет, проведены ли документы полностью - по всем регистрам
		//Параметры:  МассивДокументов - массив из проверяемых документов.
		//			ОписаниеТиповДокументов - описание типов, содержит типы которые имеются в массиве
		//Возвращаемое значение: выборка из результата запроса с полями Документ (ссылка), Проведен (булево), ПометкаУдаления (булево) и ПроведенПолностью (булево)
		//Используется в журнале ОтложенноеПроведениеДокументов и в функции ПроверитьДокументПроведенПолностью

		public object ПроверитьДокументыПроведеныПолностью(/*МассивДокументов, ОписаниеТиповДокументов*/)
		{
			/*//Создадим таблицу значений со списком документов
*/
			//ТаблицаДокументов = новый ТаблицаЗначений;
			//ТаблицаДокументов.Колонки.Добавить("Документ",ОписаниеТиповДокументов);
			//МенеджерВременныхТаблиц = новый МенеджерВременныхТаблиц();
			/*//Запрос для создания временной таблицы
*/
			//Запрос = Новый Запрос();
			//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			/*Запрос.Текст = "ВЫБРАТЬ 
	|	Таб.Документ КАК Документ
	|	Поместить ВременнаяТаблицаДокументов
	|ИЗ &ТаблицаСсылок КАК Таб";*/
			//Запрос.УстановитьПараметр("ТаблицаСсылок",ТаблицаДокументов);
			//Запрос.Выполнить();
			/*//Запрос для получения данных из временных таблиц
*/
			//Запрос = Новый Запрос();
			//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			/*Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ВременнаяТаблицаДокументов.Документ 								КАК Документ,
	|	ЕстьNULL(ВременнаяТаблицаДокументов.Документ.Проведен, ЛОЖЬ)		КАК Проведен,
	|	ЕстьNULL(ВременнаяТаблицаДокументов.Документ.ПометкаУдаления,ЛОЖЬ) 	КАК ПометкаУдаления,
	|	ВЫБОР 
	//Если документ проведен и не отражается в БУ - документ проведен полностью
	|		КОГДА ВременнаяТаблицаДокументов.Документ.Проведен И 
	|			НЕ ВременнаяТаблицаДокументов.Документ.ОтражатьВБухгалтерскомУчете ТОГДА
	|			ИСТИНА
	|		КОГДА НЕ ВременнаяТаблицаДокументов.Документ.Проведен ТОГДА
	|			ЛОЖЬ
	//Если документ формирует движения по регистру ДокументыТребующиеДопроведения - документ не проведен полностью
	|		КОГДА ДокументыТребующиеДопроведения.Регистратор is not null ТОГДА
	|			ЛОЖЬ
	|		ИНАЧЕ
	|			ИСТИНА
	|	КОНЕЦ 													КАК ПроведенПолностью
	|ИЗ ВременнаяТаблицаДокументов
	|ЛЕВОЕ СОЕДИНЕНИЕ 
	|	РегистрСведений.ДокументыТребующиеДопроведения 			КАК ДокументыТребующиеДопроведения
	|	ПО ДокументыТребующиеДопроведения.Регистратор = ВременнаяТаблицаДокументов.Документ";*/
			//Результат = Запрос.Выполнить();
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ ДОПРОВЕДЕНИЯ ДОКУМЕНТОВ
		//Функция получает выборку документов, которые необходимо допровести
		//Параметры: СтруктураПараметров 		- структура, содержащая параметры допроведения
		//			Состав параметров:
		//				Организация - организация, по которой необходимо выполнить допроведение
		//				ДопроводитьВсеДокументы (булево) - признак, определяющий какие документы следует допроводить (все / только требующие допроведения)
		//				ДатаНачала - дата, начиная с которой необходимо выполнять допроведение
		//				ДатаОкончания 	- дата, по которую необходимо выполнять допроведение
		//Возвращаемое значение: Выборка из результата запроса с полями Регистратор, Дата, МоментВремени

		public object ПолучитьВыборкуДопроведениеДокументов(/*СтруктураПараметров*/)
		{
			//Запрос = новый Запрос();
			if(true/*СтруктураПараметров.ДопроводитьВсеДокументы*/)
			{
				/*//Допроводятся все документы, которые удовлетворяют перечисленным ниже условиям
*/
				/*//- Для данного вида документа предусмотрено отложенное проведение (является регистратором регистра сведений ДокументыТребующиеДопроведения)
*/
				/*//- Проведен,
*/
				/*//- Отражается в БУ
*/
				/*//- Организация - соответствующая параметрам
*/
				/*//- Дата документа попадает в период допроведения
*/
				/*ШаблонПодзапроса = "
		 	|ВЫБРАТЬ  
			|	Ссылка 					КАК Регистратор, 
			|	Ссылка.Дата 			КАК Дата
			|ИЗ Документ.%ИмяДокумента%
			|ГДЕ 
			|	Организация = &Организация 
			|	И Дата >= &ДатаНачала И Дата <= &ДатаОкончания
			|	И Проведен И ОтражатьВБухгалтерскомУчете
			|ОБЪЕДИНИТЬ ВСЕ";*/
				//ТекстЗапроса = "";
				/*//Текст запроса складывается объединением из идентичных запросов по документам, которые являются регистраторами для регистра ДокументыТребующиеДопроведения
*/
				//РегистрМД = РегистрыСведений.ДокументыТребующиеДопроведения.СоздатьНаборЗаписей().Метаданные();
				/*//Уберем последнее ОБЪЕДИНИТЬ ВСЕ из текста запроса
*/
				//ТекстЗапроса = Лев(ТекстЗапроса, СтрДлина(ТекстЗапроса) - 14);
				/*ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	Подзапрос.Регистратор, 
		|	Подзапрос.Дата
		|ИЗ ("+ТекстЗапроса+") КАК Подзапрос
		|Упорядочить по Подзапрос.Дата";*/
			}
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр("ДатаНачала",СтруктураПараметров.ДатаНачала);
			//Запрос.УстановитьПараметр("ДатаОкончания",СтруктураПараметров.ДатаОкончания);
			//Запрос.УстановитьПараметр("Организация", СтруктураПараметров.Организация);
			return null;
		}
		//Функция выполняет собственно допроведение документов
		//Возвращает булево - успешность проведения документов.
		//Параметры: СтруктураПараметров 		- структура, содержащая параметры допроведения
		//			Состав параметров:
		//				Организация - организация, по которой необходимо выполнить допроведение
		//				ДопроводитьВсеДокументы (булево) - признак, определяющий какие документы следует допроводить (все / только требующие допроведения)
		//				ДатаНачала - дата, начиная с которой необходимо выполнять допроведение
		//				ДатаОкончания 	- дата, по которую необходимо выполнять допроведение

		public object ВыполнитьДопроведениеДокументов(/*СтруктураПараметров*/)
		{
			//Заголовок = "Допроведение документов по организации " + СтруктураПараметров.Организация;
			//Выборка = ПолучитьВыборкуДопроведениеДокументов(СтруктураПараметров);
			/*//Откроем форму прогрессора
*/
			//мКоличествоДокументов = Выборка.Количество();
			//мФормаПрогрессора = Неопределено;
			/*//Для небольшого количества документов не имеет смысл показывать форму прогрессора
*/
			if(true/*мКоличествоДокументов > 2*/)
			{
				//мФормаПрогрессора = ПолучитьОбщуюФорму("ХодВыполненияОбработкиДанных");
				//мФормаПрогрессора.НаименованиеОбработкиДанных = "Допроведение документов";
				//мФормаПрогрессора.КомментарийОбработкиДанных = "Организация: "+ СтруктураПараметров.Организация;
				//мФормаПрогрессора.Значение = 0;
				//мФормаПрогрессора.МаксимальноеЗначение = мКоличествоДокументов;
				//мФормаПрогрессора.КомментарийЗначения = "Допроведение документов ...";
				//мФормаПрогрессора.Открыть();
				//мНомерОбрабатываемогоДокумента = 0;
			}
			//мСоответствиеОшибокПриДопроведении = Новый Соответствие();
			//мДопроведениеПрекращено = Ложь;
			while(true/*Выборка.Следующий()*/)
			{
				/*//Отразим обработку следующего документа на форме прогрессора
*/
				//ОбработкаПрерыванияПользователя();
				if(true/*мФормаПрогрессора <> Неопределено*/)
				{
					//мНомерОбрабатываемогоДокумента 			= мНомерОбрабатываемогоДокумента + 1;
					//мФормаПрогрессора.Значение 				= мНомерОбрабатываемогоДокумента;
					//мФормаПрогрессора.КомментарийЗначения 	= "Допроводится " + мНомерОбрабатываемогоДокумента + " документ из " + мКоличествоДокументов;
				}
				//ТекДокумент = Выборка.Регистратор;
				if(true/*мСоответствиеОшибокПриДопроведении.Количество() = 1000*/)
				{
					//мДопроведениеПрекращено = Истина;
				}
			}
			/*//Закроем форму прогрессора
*/
			if(true/*мФормаПрогрессора <> Неопределено И мФормаПрогрессора.Открыта()*/)
			{
				//мФормаПрогрессора.Закрыть();
			}
			if(true/*мСоответствиеОшибокПриДопроведении.Количество() = 0*/)
			{
				/*//Возвращаем признак успешного выполнения
*/
			}
			/*//Выведем сведения об ошибках
*/
			//ОбщегоНазначения.СообщитьОбОшибке("При допроведении документов произошли ошибки!",,Заголовок);
			if(true/*мДопроведениеПрекращено*/)
			{
				//ОбщегоНазначения.СообщитьОбОшибке("Получено 1000 сообщений об ошибках. После этого допроведение было прекращено",, Заголовок);
			}
			return null;
		}
		//Процедура запускает допроведение документов по нескольким организациям
		//Параметры:
		//	ТаблицаОрганизаций: таблица значений, содержащая колонки Организация И ДатаНачалаОтложенногоПроведения
		//	ПараметрыДопроведения: структура, содержащая следующие параметры:
		//		ДатаНачала - дата начала периода допроведения
		//		ДатаОкончания - дата окончания периода допроведения
		//		ДопроводитьВсеДокументы - булево, признак какие документы следует допроводить (все (истина) либо только требующие допроведения (ложь))

		public void ВыполнитьДопроведениеДокументовПоСпискуОрганизаций(/*ТаблицаОрганизаций, ПараметрыДопроведения*/)
		{
			if(true/*ТаблицаОрганизаций.Количество() = 0*/)
			{
			}
		}
	}
}
